home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Blender 2.49b / blender-2.49b-windows.exe / $_4_ / .blender / scripts / bpymodules / BPySys.py < prev    next >
Text File  |  2009-08-31  |  3KB  |  74 lines

  1.  
  2. ## This was used to make V, but faster not to do all that
  3. ##valid = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_'
  4. ##v = range(255)
  5. ##for c in valid: v.remove(ord(c))
  6. v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,58,59,60,61,62,63,64,91,92,93,94,96,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254]
  7. invalid = ''.join([chr(i) for i in v])
  8. ## del v, c, i, valid
  9. del v, i
  10.  
  11. def cleanName(name):
  12.     for ch in invalid:    name = name.replace(ch, '_')
  13.     return name
  14.  
  15. def caseInsensitivePath(path, RET_FOUND=False):
  16.     '''
  17.     Get a case insensitive path on a case sensitive system
  18.     
  19.     RET_FOUND is for internal use only, to avoid too many calls to os.path.exists
  20.     # Example usage
  21.     getCaseInsensitivePath('/hOmE/mE/sOmEpAtH.tXt')
  22.     '''
  23.     import os # todo, what happens with no os?
  24.     
  25.     if os==None:
  26.         if RET_FOUND:    ret = path, True
  27.         else:            ret = path
  28.         return ret
  29.     
  30.     if path=='' or os.path.exists(path):
  31.         if RET_FOUND:    ret = path, True
  32.         else:            ret = path
  33.         return ret
  34.     
  35.     f = os.path.basename(path) # f may be a directory or a file
  36.     d = os.path.dirname(path)
  37.     
  38.     suffix = ''
  39.     if not f: # dir ends with a slash?
  40.         if len(d) < len(path):
  41.             suffix = path[:len(path)-len(d)]
  42.  
  43.         f = os.path.basename(d)
  44.         d = os.path.dirname(d)
  45.     
  46.     if not os.path.exists(d):
  47.         d, found = caseInsensitivePath(d, True)
  48.         
  49.         if not found:
  50.             if RET_FOUND:    ret = path, False
  51.             else:            ret = path
  52.             return ret
  53.     
  54.     # at this point, the directory exists but not the file
  55.     
  56.     try: # we are expecting 'd' to be a directory, but it could be a file
  57.         files = os.listdir(d)
  58.     except:
  59.         if RET_FOUND:    ret = path, False
  60.         else:            ret = path
  61.  
  62.     f_low = f.lower()
  63.     
  64.     try:    f_nocase = [fl for fl in files if fl.lower() == f_low][0]
  65.     except:    f_nocase = None
  66.     
  67.     if f_nocase:
  68.         if RET_FOUND:    ret = os.path.join(d, f_nocase) + suffix, True
  69.         else:            ret = os.path.join(d, f_nocase) + suffix
  70.         return ret
  71.     else:
  72.         if RET_FOUND:    ret = path, False
  73.         else:            ret = path
  74.         return ret # cant find the right one, just return the path as is.